package com.foreknow.proxy;

import java.lang.reflect.Proxy;

public class MyProxyFactory {
    /**
     * 生成代理
     * @param obj 目标对象
     * @return
     */
    public static Object getProxy(Object obj) {
        ProxyHandler proxyHandler = new ProxyHandler();
        //设置目标对象
        proxyHandler.setTarget(obj);
        //  ClassLoader loader: 指定当前目标对象使用类的加载器，获取加载器的方法是固定的
        //  Class<?>[] interfaces: 目标对象实现的接口的类型
        //  InvocationHandler h: 执行目标对象方法的时候，会触发的方法。动态代理核心的处理程序
        return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),proxyHandler);
    }
}
